<?php namespace Common\Model;

use Hdphp\Model\Model;

//用户表
class User extends Model{
	//定义模型
	protected $table = "User";
	//自动验证
	protected $validate=array(
		array('account','required','用户名不能为空',3,3),
		array('account','email','用户名格式不对',3,3),
		array('password','required','密码不能为空',3,3),
		array('password','minlen:6','密码不能少于6位',3,3),
	);
	//自动完成
	protected $auto=array(
		array('password','md5','function',3,1)
	);

	//用户添加
	public function store(){
		if (!$this->checkregister()) return false;
		if (!$this->create()) return false;
		$uid=$this->add();
		return true;
	}

	//注册验证
	public function checkregister(){
		//判断是否同意用户协议
		$agreement=Q('post.agreement');
		if (!isset($agreement)){
			$this->error='请阅读同意《拉勾用户协议》';
			return false;
		}
		//判断是否选择企业或者个人
		$type=Q('post.type');
		if ($type==''){
			$this->error='请选择用户类型';
			return false;
		}
		//判断账号是否已注册
		$account=Q('post.account','','strtolower');
		if (!$this->registered($account)) {
			$this->error='该账号已注册';
			return false;
		}
		return true;
	}

	//判断账号是否注册
	public function registered($account){
		$data=$this->where("account='{$account}'")->get();
		if ($data) return false;
		return true;
	}

	//登录验证
	public function checklogin(){
		//判断验证码是否正确
		$code=Q('post.code','','strtoupper');//获取提交的验证码
		if ($code != $_SESSION['code']) {
			$this->error='验证码不正确';
			return false;
		}
		//验证用户名是否正确
		$account=Q('post.account');
		$data=$this->where("account='{$account}'")->find();
		if (!$data){
			$this->error='用户名或密码不正确';
			return false;
		}
		//验证密码是否正确
		$password=Q('post.password','','md5');
		if ($data['password'] != $password){
			$this->error='用户名或密码不正确';
			return false;
		}
		//登录成功
		$_SESSION['homeInfo']=array(
			'uid'=>$data['uid'],
			'username'=>$data['username'],
			'type'=>$data['type'],
			'company_status'=>$data['company_status'],
			'lastlogintime'=>$data['logintime']
		);
		//更新登录时间
		$this->where("account='{$account}'")->update(['logintime'=>time()]);
		return true;
	}

	//修改密码
	public function editpassword(){
		$uid=$_SESSION['homeInfo']['uid'];
		//判断密码是否少于6位
        $newPassword=Q('post.newpassword');
        if (strlen($newPassword)<6) {
        	$this->error='新密码格式不正确';
        	return false;
        }
        //判断两个新密码是否一致
        $confirmPassword=Q('post.confirmpassword');
        if ($newPassword != $confirmPassword) {
        	$this->error='两次输入的密码不一致';
        	return false;
        }
        //原密码是否正确
        $pwd=$this->where("uid={$uid}")->pluck('password');
        $oldPassword=Q('post.oldpassword','','md5');
        if ($oldPassword != $pwd) {
        	$this->error='原密码错误';
        	return false;
        }
        //修改密码
        $this->where("uid={$uid}")->update(['password'=>md5($newPassword)]);
        return true;
	}


}